/**
 * 该中间件用于递归清空 req.body | req.query 中值为空字符串的值, 避免后续操作时导致查询错误.
 */
const clearInvalidValue = (params) => {
	// 遍历该对象的所有键
	for (let key in params) {
		const value = params[key];
		// 如果值是空字符串, 删除该属性
		if (value === "") {
			delete params[key];
			continue;
		}
		// 如果该属性也是一个对象, 直接递归
		if (Object.prototype.toString.call(value) === "[object Object]") clearInvalidValue(value);
	}
};

module.exports = (req, res, next) => {
	clearInvalidValue(req.body);
	clearInvalidValue(req.query);

	next();
};
